// class Pros{
//     constructor(){
//         this.x = "111",
//         this.y = "222",
//         this.z = function(){
//             return "22222"
//         }
//     }
// }
//构造函数类和普通构造函数的区别  class类不支持预编译 所以只能在下面调用它 
function Pros(unapp){
    this.x = "111",
    this.y = "222",
    this.z = function(){
        return unapp
    }
    cakks.call(this) //改变this指向 并调用
}

function cakks(){
    console.log(this.x)
}

//个人理解：构造函数相当于是在里面创建了一个实例 该实例里面的this指向是这个方法本身 也就是对象本身 也可以通过调用方法拿到函数内部的值
//好处 里面可以使用function处理方法 也可以通过传入形参做一系列的逻辑处理 当然 也可以通过call，apply，bind方法在别另外的函数体内部访问this
// 不会受到全部环境的污染 什么地方想用什么地方调用就行

//构造函数相当于在函数内部执行了外部元素 只不过可以避免重复利用 代码维护性高 调用轻便 适合用于一些声明元素多的地方
console.log(new Pros("222").z())